package br.com.sgpv2.service.departamento;

import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import br.com.sgpv2.controler.NegocioExeception;
import br.com.sgpv2.entity.organograma.Departamento;
import br.com.sgpv2.entity.pessoa.Contrato;
import br.com.sgpv2.hibernate.departamento.DepartamentoRepository;

/**
 * Classe de serviço de Departamento.
 */
@Service(value = "departamentoService")
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public class DepartamentoServiceImpl implements DepartamentoService {
	
	
	private DepartamentoRepository departamentoRepository;

	@Override
	public void salvar(Departamento departamento) {
		departamentoRepository.salvar(departamento);

	}

	@Override
	public void alterar(Departamento departamento) {
		departamentoRepository.alterar(departamento);

	}

	@Override
	public List<Departamento> listar() {
		return departamentoRepository.listarOrder("descricao");
	}

	@Override
	public void excluir(Departamento departamento) {
		departamentoRepository.excluir(departamento);

	}

	@Override
	public Departamento buscar(Integer pk) throws NegocioExeception {
		return departamentoRepository.buscar(pk);
	}

	@Override
	public boolean validarExclusao(String idDepartamento) {
		List<Contrato> contratos = departamentoRepository.listarContratosPorDepartamento(Integer.parseInt(idDepartamento));
		if(contratos.size() > 0){
			return false;
		}else{
			return true;
		}
	}

	public DepartamentoRepository getDepartamentoRepository() {
		return departamentoRepository;
	}

	@Autowired
	public void setDepartamentoRepository(
			DepartamentoRepository departamentoRepository) {
		this.departamentoRepository = departamentoRepository;
	}
	
	public List<Departamento> consultarPorDescricao(String descricao) {
		if (StringUtils.isNotBlank(descricao)) {
			return departamentoRepository.consultarPorDescricao(descricao);
		} else {
			return listar();
		}
	}

}
